Что ж, сделать можно много чего, на самом то деле. Но чтоб работало это все вменяемо…может и не работать.
Вот что нужно учесть при реализации всего вышенаписанного:
1) Хоть мейкер и позволяет хранить функции в переменных, но «вешается», если таких функций будет много. Много, в моем случае, было равно 16. Пришлось делить объявление функций на три отдельных общих событий.
Что значит «вешается»? Перестает подгружать-применять изменение в коде функций. Может он их так хитро кэширует…но иначе я это побороть не смог.
2) Если у вас в игре есть перемещения по разным картам, то каждый раз после попадания игрока на карту с такой АБС, нужно заново вызывать событие инициализации всех функций. Поэтому событие с инициализацией (или которое вызываем Общее событие инициализации) нужно на карте ставить с «Удалением события» - это заставит его однократно отработать при КАЖДОМ перемещении на карту.
3) При большом количестве эвентов-врагов, особенно стреляющих-бомбистов, может лагать. Ограничивайте их кол-во или активируйте их при достижении определенного фрагмента карты.
4) Также при большом кол-ве эвентов может повторяться Id клонируемых, чем это чревато – я не знаю.
5) При использовании такого подхода в создании «АБС», может быть ситуация что эвент «удалится» быстрее чем нужно и будет игровая ошибка. Я не нашел решения этого вопроса, кроме как написание отдельного мини-плагина, оборачивающего ошибку (код плагина скопируйте в файл с расшерением .js и подключите к проекту):
Код:
Game_Event.prototype.findProperPageIndex = function() {
try{
const pages = this.event().pages;
for (let i = pages.length - 1; i >= 0; i--) {
const page = pages[i];
if (this.meetsConditions(page)) {
return i;
}
}
}catch(exception){
return -1;
}
return -1;
};
6)
Ну и самый важный нюанс!
Вызов меню (открытие любой другой сцены) заставляет мукер перерисовывать (или как-то иначе заново инициализировать) игровую сцену, в результате чего выходят очень интересные ошибки.
Возможно, если реализовывать это все плагином - такого не будет.
В текущей реализации единственный выход - запрещать игроку открывать все окна/сцены...то есть запрещать доступ к меню!
Социальные закладки